/**
 * 用户相关服务
 */

const util = require('../utils/util.js');
const api = require('../config/api.js');


/**
 * 调用微信登录
 */
function loginByWeixin(userInfo) {
  let code = null;
  return new Promise(function (resolve, reject) {
    return util.login().then((res) => {
      code = res.code;
      return userInfo;
    }).then((userInfo) => {
      //登录远程服务器
      util.request(api.AuthLoginByWeixin, { code: code, userInfo: userInfo }, 'POST', 'application/json').then(res => {
        console.log('登录API响应:', res);
        
        // 使用标准化的响应处理
        const normalizedRes = util.normalizeApiResponse(res);
        console.log('标准化后的响应:', normalizedRes);
        
        if (normalizedRes.success) {
          //存储用户信息
          wx.setStorageSync('userInfo', normalizedRes.data.userInfo);
          wx.setStorageSync('token', normalizedRes.data.token);
          wx.setStorageSync('userId', normalizedRes.data.userId);
          
          console.log('登录成功');
          resolve(normalizedRes);
        } else {
          console.error('登录失败:', normalizedRes.message);
          // 登录失败时清除可能存在的错误数据
          wx.removeStorageSync('userInfo');
          wx.removeStorageSync('token');
          wx.removeStorageSync('userId');
          
          util.showErrorToast(normalizedRes.message || '登录失败，请重试');
          reject(normalizedRes);
        }
      }).catch((err) => {
        console.error('登录请求失败:', err);
        // 网络错误时清除可能存在的错误数据
        wx.removeStorageSync('userInfo');
        wx.removeStorageSync('token');
        wx.removeStorageSync('userId');
        
        util.showErrorToast('网络连接失败，请检查网络后重试');
        reject(err);
      });
    }).catch((err) => {
      console.error('微信登录code获取失败:', err);
      util.showErrorToast('获取微信登录凭证失败，请重试');
      reject(err);
    })
  });
}

/**
 * 判断用户是否登录
 */
function checkLogin() {
  return new Promise(function (resolve, reject) {
    if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) {

      util.checkSession().then(() => {
        resolve(true);
      }).catch(() => {
        reject(false);
      });

    } else {
      reject(false);
    }
  });
}


module.exports = {
  loginByWeixin,
  checkLogin,
};











